﻿Imports TransportadoraToledoBLL

Public Class frm_cadastro_cargas

#Region "Métodos e Variáveis"
    Public objBLL As New CargasBLL
    Public controle As String
    Public ultimo, primeiro, atual As Integer
    Dim controlePesquisar As Boolean = False
    Dim objS As SeguroBLL
    Dim objTC As tiposCargasBLL
    Dim objC As ClienteBLL
    Dim objDes As DestinatarioBLL

    Sub carregaPrimeiroUltimo()
        Try
            ultimo = objBLL.localizarPrimeiroUltimo("ultimo")
            primeiro = objBLL.localizarPrimeiroUltimo("primeiro")
            atual = ultimo
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub


    Sub carregaUltimo()
        If (ultimo <> 0) Then
            'algum usuario foi clicado
            objBLL.localizar(ultimo)
            If (objBLL.pCarCodigo <> 0) Then
                carregaCampos()

            End If
        End If
    End Sub
    Sub carregaPrimeiro()
        If (primeiro <> 0) Then
            'algum usuario foi clicado
            objBLL.localizar(primeiro)
            If (objBLL.pCarCodigo <> 0) Then
                carregaCampos()

            End If
        End If
    End Sub

    Sub limpar()
        tbCodigo.Text = ""
        tbCodSeguro.Text = ""
        tbCodTipoCarga.Text = ""
        tbValor.Text = ""
        tbValor.Text = ""
        tbConsultar.Text = ""
        tbPesoCarga.Text = ""
        tbSeguro.Text = ""
        tbTipoCarga.Text = ""
        tbProtocolo.Text = ""
        controle = ""
        lValida.Text = ""
        objBLL.limpar()
    End Sub

    Sub status(ByVal sta As Boolean)

        If (tbCodigo.Text = "" Or controle = "A") Then
            bIncluir.Enabled = sta

            bExcluir.Enabled = sta
            If (tbCodigo.Text = "") Then
                bAlterar.Enabled = False
                bVaPara.Enabled = False
                bPesquisar.Enabled = False
                bExcluir.Enabled = False
            Else
                bExcluir.Enabled = sta
                bPesquisar.Enabled = sta
                bAlterar.Enabled = sta
                bVaPara.Enabled = sta
            End If
            If (cbStatus.SelectedIndex = 4 Or cbStatus.SelectedIndex = 7) Then
                bAlterar.Enabled = False
            End If
            bCancelar.Enabled = Not sta
            bSalvar.Enabled = Not sta
            bPrimeiro.Enabled = sta
            bProximo.Enabled = sta
            bUltimo.Enabled = sta
            bAnterior.Enabled = sta
            gbConteudo.Enabled = Not sta
        Else
            bIncluir.Enabled = sta

            If (tbCodigo.Text = "") Then
                bExcluir.Enabled = False
                bAlterar.Enabled = False
                bVaPara.Enabled = False
                bPesquisar.Enabled = False
            Else
                bExcluir.Enabled = sta
                bAlterar.Enabled = sta
                bVaPara.Enabled = sta
                bPesquisar.Enabled = sta
            End If

            bCancelar.Enabled = Not sta
            bSalvar.Enabled = Not sta

            gbConteudo.Enabled = Not sta
        End If
        If (cbStatus.SelectedIndex = 4 Or cbStatus.SelectedIndex = 7) Then
            bAlterar.Enabled = False
        End If

        If (atual = primeiro And atual = ultimo) Then
            bProximo.Enabled = False
            bUltimo.Enabled = False
            bAnterior.Enabled = False
            bPrimeiro.Enabled = False
        ElseIf (atual = ultimo) Then
            bProximo.Enabled = False
            bUltimo.Enabled = False
            bAnterior.Enabled = True
            bPrimeiro.Enabled = True
        ElseIf (atual = primeiro) Then
            bProximo.Enabled = True
            bUltimo.Enabled = True
            bAnterior.Enabled = False
            bPrimeiro.Enabled = False
        Else
            bProximo.Enabled = True
            bUltimo.Enabled = True
            bAnterior.Enabled = True
            bPrimeiro.Enabled = True

        End If
    End Sub
    Sub carregaPropriedades()

        Try
            If (tbCodigo.Text = "") Then
                objBLL.pCarCodigo = 0
            Else
                objBLL.pCarCodigo = tbCodigo.Text
            End If
            If (tbValor.Text <> "") Then
                objBLL.pcarValor = tbValor.Text
            Else
                objBLL.pcarValor = 0
            End If
            If (tbPesoCarga.Text <> "") Then
                objBLL.pPeso = tbPesoCarga.Text
            Else
                objBLL.pPeso = 0
            End If
            objBLL.pProtocolo = tbProtocolo.Text
            If (tbSeguro.Text <> "") Then
                objBLL.pSegCodigo = tbCodSeguro.Text
            Else
                objBLL.pSegCodigo = 0
            End If
            objBLL.pCarStatus = cbStatus.SelectedIndex
            If (tbCodTipoCarga.Text <> "") Then
                objBLL.pTcCodigo = tbCodTipoCarga.Text
            Else
                objBLL.pTcCodigo = 0
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Sub carregaCampos()
        Try
            objTC = New tiposCargasBLL
            objS = New SeguroBLL
            objC = New ClienteBLL
            objS.localizar(objBLL.pSegCodigo)
            objTC.localizar(objBLL.pTcCodigo)

            tbCodigo.Text = objBLL.pCarCodigo
            tbValor.Text = objBLL.pcarValor
            tbCodTipoCarga.Text = objBLL.pTcCodigo
            tbTipoCarga.Text = objTC.pDescricao
            tbCodSeguro.Text = objBLL.pSegCodigo
            tbSeguro.Text = objS.pNome
            tbProtocolo.Text = objBLL.pProtocolo
            tbPesoCarga.Text = objBLL.pPeso
            cbStatus.SelectedIndex = objBLL.pCarStatus
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Public Sub atualizaGrid()
        Try
            dgDados.DataSource = objBLL.localizarProtocolo(tbConsultar.Text)
            dgDados.Columns(0).HeaderText = "Código"
            dgDados.Columns(4).HeaderText = "Valor Carga"
            dgDados.Columns(3).HeaderText = "Tipo de Carga"
            dgDados.Columns(2).HeaderText = "Seguro"
            dgDados.Columns(1).HeaderText = "Protocolo da Carga"
            dgDados.Columns(5).HeaderText = "Peso da Carga"
            dgDados.Columns(0).Width = 60
            dgDados.Columns(4).Width = 70
            dgDados.Columns(3).Width = 110
            dgDados.Columns(2).Width = 150
            dgDados.Columns(1).Width = 110
            dgDados.Columns(5).Width = 130
            dgDados.AllowUserToAddRows = False

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
#End Region

    Private Sub bIncluir_Click(sender As System.Object, e As System.EventArgs) Handles bIncluir.Click
        limpar()

        controle = "I"
        cbStatus.SelectedIndex = 0
        status(False)
        Dim numero As Integer
        Dim GeradorDeNumerosAleatorios As Random = New Random()
        Dim tab As DataTable
        numero = GeradorDeNumerosAleatorios.Next()
        tbProtocolo.Text = numero
        tab = objBLL.localizarProtocolo(tbProtocolo.Text)
        While (tab.Rows.Count > 0)
            numero = GeradorDeNumerosAleatorios.Next()
            tbProtocolo.Text = numero + Date.Today.Hour + Date.Today.Millisecond
        End While
    End Sub

    Private Sub bPesquisar_Click(sender As System.Object, e As System.EventArgs) Handles bPesquisar.Click
        If (controlePesquisar = False) Then
            gbConsulta.Visible = True
            dgDados.DataSource = Nothing
            Me.Location = New System.Drawing.Point(Me.Location.X, Me.Location.Y - 90)
            Me.Size = New Size(734, 597)
            controlePesquisar = True
        Else
            bClose_Click(sender, e)

        End If
    End Sub

    Private Sub bClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bClose.Click
        gbConsulta.Visible = False
        controlePesquisar = False
        Me.Location = New System.Drawing.Point(Me.Location.X, Me.Location.Y + 90)
        Me.Size = New Size(734, 338)
    End Sub


    Private Sub bPesquisarTipoCarga_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bPesquisarTipoCarga.Click
        Try
            Dim frm As New frm_consultas
            objTC = New tiposCargasBLL
            frm.tipo = "tipo_cargas"
            frm.ShowDialog()
            If (frm.codigo <> 0) Then
                objTC.localizar(frm.codigo)
                If (objTC.pStatus = "S" Or objTC.pStatus = "A") Then
                    tbCodTipoCarga.Text = objTC.pCodigo
                    tbTipoCarga.Text = objTC.pDescricao
                    objTC = Nothing
                Else
                    Throw New Exception("Este tipo de carga está inativo")
                End If
            End If
            frm = Nothing
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        End Try
    End Sub

    Private Sub bSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSair.Click
        Me.Close()
    End Sub

    Private Sub bPesquisarSeguro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bPesquisarSeguro.Click
        Try
            Dim frm As New frm_consultas
            objS = New SeguroBLL
            frm.tipo = "Seguros"
            frm.ShowDialog()
            If (frm.codigo <> 0) Then
                objS.localizar(frm.codigo)
                If (objS.pStatus = "A" Or objS.pStatus = "S") Then
                    tbCodSeguro.Text = objS.pCodigo
                    tbSeguro.Text = objS.pNome
                    objS = Nothing
                Else
                    Throw New Exception("Este Seguro está inativo")
                End If
            End If
            frm = Nothing
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        End Try
    End Sub

    Private Sub frm_cadastro_cargas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            carregaPrimeiroUltimo()
            carregaUltimo()
            bCancelar_Click(sender, e)
            Me.Size = New Size(734, 338)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        End Try
    End Sub

    Private Sub bAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bAlterar.Click
        controle = "A"

        status(False)
    End Sub

    Private Sub bExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bExcluir.Click
        Try
            If (MessageBox.Show("Deseja excluir?", "", MessageBoxButtons.YesNo) = DialogResult.Yes) Then
                objBLL.VerificaExclusao(Integer.Parse(tbCodigo.Text))
                If (objBLL.pVerifica = False) Then
                    objBLL.VerificaMovimentacao(Integer.Parse(tbCodigo.Text))
                    If (objBLL.pVerifica = False) Then
                        carregaPropriedades()
                        objBLL.excluir()
                        MessageBox.Show("Excluido com sucesso!")
                        limpar()
                        carregaPrimeiroUltimo()
                        carregaUltimo()
                        status(True)
                    Else
                        MsgBox("Carga não pode ser excluido, pois possui Movimentação!", MsgBoxStyle.Critical, "Erro")
                    End If

                Else
                    MsgBox("Carga não pode ser excluido, pois possui Histórico!", MsgBoxStyle.Critical, "Erro")
                End If

                End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub bSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSalvar.Click
        Try
            carregaPropriedades()
            If (controle = "I") Then
                objBLL.inserir()
                MessageBox.Show("Incluido com sucesso!")
                limpar()
                carregaPrimeiroUltimo()
                carregaUltimo()
                status(True)
            Else
                objBLL.alterar()
                MessageBox.Show("Alterado com sucesso!")

                status(True)
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub bCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bCancelar.Click
        If (controle = "I") Then
            carregaPrimeiroUltimo()
            carregaUltimo()
        ElseIf (controle = "A") Then
            objBLL.localizar(atual)
            If (objBLL.pCarCodigo <> 0) Then
                carregaCampos()
                atual = objBLL.pCarCodigo
            End If
        End If
        controle = ""
        status(True)
    End Sub

    Private Sub bVaPara_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bVaPara.Click
        Try
            Dim frm As New frm_VaPara("cargas")
            frm.ShowDialog()
            If (frm.codigo <> 0) Then
                'algum usuario foi clicado
                objBLL.localizar(frm.codigo)
                If (objBLL.pCarCodigo <> 0) Then
                    carregaCampos()
                    atual = objBLL.pCarCodigo
                Else
                    Throw New Exception("Registro Inexistente!")
                End If
            Else
                Throw New Exception("Registro Inexistente!")
            End If
            status(True)
            frm = Nothing
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        End Try
    End Sub

    Private Sub bPrimeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bPrimeiro.Click
        carregaPrimeiro()
        atual = primeiro
        status(True)
    End Sub

    Private Sub bAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bAnterior.Click
        Dim codigo = objBLL.localizarProxAnteriro("anterior", atual)
        objBLL.localizar(codigo)
        If (objBLL.pCarCodigo <> 0) Then
            carregaCampos()
            atual = objBLL.pCarCodigo
        End If
        status(True)
    End Sub

    Private Sub bProximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bProximo.Click
        Dim codigo = objBLL.localizarProxAnteriro("proximo", atual)
        objBLL.localizar(codigo)
        If (objBLL.pCarCodigo <> 0) Then
            carregaCampos()
            atual = objBLL.pCarCodigo
        End If
        status(True)
    End Sub

    Private Sub bUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bUltimo.Click
        carregaUltimo()
        atual = ultimo
        status(True)
    End Sub

    Private Sub bAjuda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bAjuda.Click
        Dim Ajuda As String
        Ajuda = Application.StartupPath
        Ajuda = Ajuda.Replace("\bin\Debug", "\Arquivo de Ajuda\index.html#CadastroCargas")
        Dim Ie As Object
        Ie = CreateObject("InternetExplorer.Application")
        Ie.Visible = True
        Ie.Navigate(Ajuda)
    End Sub

    Private Sub bFiltrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bFiltrar.Click
        atualizaGrid()
    End Sub

    Private Sub dgDados_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgDados.CellDoubleClick
        Dim codigo As Integer
        If (e.RowIndex >= 0) Then
            codigo = dgDados.Rows(e.RowIndex).Cells("car_codigo").Value
            objBLL.localizar(codigo)
            If (objBLL.pCarCodigo <> 0) Then
                carregaCampos()
                atual = objBLL.pCarCodigo
                bClose_Click(sender, e)
            End If
        End If
    End Sub

    Private Sub tbPesoCarga_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbPesoCarga.KeyPress
        Try
            If Asc(e.KeyChar) = 3 Or Asc(e.KeyChar) = 8 Or Asc(e.KeyChar) = 22 Or Asc(e.KeyChar) = 24 Or Asc(e.KeyChar) = 44 Then
                Exit Sub
            End If

            If Not Char.IsNumber(e.KeyChar) Then
                e.Handled = True
            End If

            '    If (tbPesoCarga.TextLength > 5) Then
            '        lValida.ForeColor = Color.Red
            '        lValida.Text = "Carga muito pesada para o veículo"
            '        Dim total As Integer = tbPesoCarga.TextLength
            '        Dim texto As String = tbPesoCarga.Text
            '        tbPesoCarga.Text = ""
            '        For index = 0 To texto.Length - 2
            '            tbPesoCarga.Text += texto(index)
            '        Next
            '    Else
            '        lValida.Text = ""
            '    End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        End Try
    End Sub

    Private Sub tbPesoCarga_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbPesoCarga.TextChanged
        'Try
        '    If (Not IsNumeric(tbPesoCarga.Text) And (tbPesoCarga.Text <> "")) Then
        '        tbPesoCarga.Text = ""
        '        lValida.Text = "Digite apenas números"
        '        lValida.ForeColor = Color.Red
        '    Else
        '        lValida.Text = ""
        '    End If
        'Catch ex As Exception
        '    MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        'End Try

    End Sub


    Private Sub tbValor_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbValor.KeyPress
        Try
            If Asc(e.KeyChar) = 3 Or Asc(e.KeyChar) = 8 Or Asc(e.KeyChar) = 22 Or Asc(e.KeyChar) = 24 Or Asc(e.KeyChar) = 44 Then
                Exit Sub
            End If

            If Not Char.IsNumber(e.KeyChar) Then
                e.Handled = True
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
        End Try

    End Sub

    Private Sub tbValor_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbValor.Leave
        tbValor.Text = FormatNumber(tbValor.Text, 2)
    End Sub


End Class